package p2psvideo;

import java.util.Map;

///接口定义
public class Interfaces {
	
///错误接口回调
public interface OnErrorListener {
	void onError(Exception e, String msg);
}

///准备好播放回调
public interface OnPreparedListener
{    
    void onPrepared();
}

///播放完成回调
public interface OnCompletionListener
{    
    void onCompletion();
}

///缓冲回调
public interface OnBufferingUpdateListener
{    
    void onBufferingUpdate(int percent);
}

///seek完成回调
public interface OnSeekCompleteListener
{    
    void onSeekComplete();
}

///视频大小发生变化或者获取到视频大小时调用
public interface OnVideoSizeChangedListener
{    
    void onVideoSizeChanged(int width, int height);
}


///文件列表发生变化时回调
public interface OnFileListChangedListener
{    
  void onChanged(String vsid);
}


///下载任务创建回调
public interface OnFileDownloadCreatedListener
{    
	void onCreated(String vsid);
}

///下载任务创建失败
public interface OnFileDownloadFailedListener
{    
	void onFailed(String vsid);
}

///下载进度变化时回调
public interface OnFileDownloadProgressListener
{    
	void onProgress(String vsid, int percent);
}

///下载完成通知
public interface OnFileDownloadFinishedListener
{    
	void onDownloadFinished(String vsid);
}

///服务就绪通知
public interface OnServiceReadyListener
{
	void onServiceReady();
}

///http或者https或rtmfpget的请求响应接口
public interface OnHttpProgressResponse
{
	/*!
	 * @brief 响应头回调
	 * @param responseCode HTTP响应码, 如果是-1表示硬错误
	 * @param rtmfpget 是否是rtmfpget协议的响应, 否则是http协议的响应
	 * @param header 响应头列表, 如果出现硬错误则header为null
	 * @param contentLength 响应体的长度, 如果没有响应体长度则为-1, 对于rtmfpget则表示整个请求的文件的总长度，并不代表数据传输长度(当有范围请求时)
	 */
	void onResponseHeader(int responseCode, boolean rtmfpget, Map<String, String> header, long contentLength);
	/*!
	 * @brief 响应体数据回调
	 * @param data 数据缓冲区
	 * @param length 数据长度
	 * @note 注意不要存储data, 因为data本身可能被复用，回调完data则失效
	 */
	void onProgress(byte[] data, int length);
	/*!
	 * @brief 响应结束
	 * @param gracefully 表示响应是否正常结束, true为正常结束，false为非正常结束
	 */
	void onResponseEnd(boolean gracefully);
}

///http或者https或rtmfpget的请求响应接口
public interface OnHttpResponse
{
	void onData(boolean error, boolean rtmfpget, byte[] data);
}

}